package net.jgrm.product.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.jgrm.product.entity.Product;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 商品Mapper接口
 */
@Mapper
public interface ProductMapper extends BaseMapper<Product> {

    /**
     * 扣减库存
     *
     * @param productId 商品ID
     * @param quantity  扣减数量
     * @return 影响行数
     */
    int decreaseStock(@Param("productId") Long productId, @Param("quantity") Integer quantity);

    /**
     * 增加库存
     *
     * @param productId 商品ID
     * @param quantity  增加数量
     * @return 影响行数
     */
    int increaseStock(@Param("productId") Long productId, @Param("quantity") Integer quantity);

    /**
     * 设置库存
     *
     * @param productId 商品ID
     * @param stock     库存数量
     * @return 影响行数
     */
    int updateStock(@Param("productId") Long productId, @Param("stock") Integer stock);

    /**
     * 获取商品库存
     *
     * @param productId 商品ID
     * @return 库存数量
     */
    Integer getStockById(@Param("productId") Long productId);

    /**
     * 获取商品信息
     *
     * @param productId 商品ID
     * @return 商品信息
     */
    void removeById(@Param("productId") Long productId);

    /**
     * 批量删除商品
     *
     * @param productIds
     */
    void deleteByIds(@Param("productIds") List<Long> productIds);


}
